#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *

def leer(coor_mapa):   # Lee el mapa segun las coordenadas dadas
	devolver = {}
	
	mapax = coor_mapa[0]	# Traduce la coordenada x a el simbolo + tres numeros
	try:
		negativo = False
		if mapax < 0:
			negativo = True
			mapax = -mapax
		if mapax < 100:
			if mapax < 10:
				mapax = "00"+str(mapax)
			else:
				mapax = "0"+str(mapax)
		else:
			mapax = str(mapax)
		if negativo:
			mapax = "-"+mapax
		else:
			mapax = "+"+mapax
			
		negativo = False		# Hace lo mismo can la y
		mapay = coor_mapa[1]
		if mapay < 0:
			negativo = True
			mapay = -mapay
		if mapay < 100:
			if mapay < 10:
				mapay = "00"+str(mapay)
			else:
				mapay = "0"+str(mapay)
		else:
			mapay = str(mapay)
		if negativo:
			mapay = "-"+mapay
		else:
			mapay = "+"+mapay
			
		nombre = "data/mapa/mapas/"+mapax+mapay+".tmx"  # Carga el las lineas del mapa a la lista "lineas"
		mapa_tmx = open(nombre, "r")
		lineas = mapa_tmx.readlines()
		mapa_tmx.close()
		
		tilesets_lineas = []		# Busca en que lineas se definen tilesets y capas
		layers_lineas = []
		for linea in lineas:
			if linea.count("<tileset"):
				tilesets_lineas.append(lineas.index(linea))
			if linea.count("<layer"):
				layers_lineas.append(lineas.index(linea))
		
		for nlinea in tilesets_lineas:			# Traduce cada tileset a un diccionario con la clave como el numero (string)
			valores = lineas[nlinea].split()	# y la direccion de la imagen (uso un archivo para cada tile)
			for valor in valores:
				if valor.count("firstgid="):
					valor = valor.replace("firstgid=","")
					numero = valor[1:-1]
			valores = lineas[nlinea+1].split()
			for valor in valores:
				if valor.count("source="):
					valor = valor.replace("source=","")
					valor = valor[1:-1]
					direccion = valor.replace("../../../","")
			devolver[numero] = direccion
		
		for nlinea in layers_lineas:			# Agrega al diccionario que se devuelve una lista de listas que corresponden al mapa (32x32)
			valores = lineas[nlinea].split()
			for valor in valores:
				if valor.count("name="):
					valor = valor.replace("name=","")
					nombre = valor[1:-1]
			mapa = []
			for i in range(31):
				linea = lineas[nlinea+2+i].split(",")
				linea = linea[0:-1]
				mapa.append(linea)
			i = 31
			linea = lineas[nlinea+2+i].split(",")
			linea[-1] = linea[-1].replace("\n","")
			mapa.append(linea)
			devolver[nombre] = mapa
	except:
		mapa = []					# Si el archivo del mapa no existe devuelve un mapa vacio
		for y in range(32):
			linea = []
			for x in range(32):
				linea.append("0")
			mapa.append(linea)
		for nombre in ["suelo","objetos"]:
			devolver[nombre] = mapa
	
	return devolver			# Devuelve un diccionario
